<#ftl strip_whitespace=true >
<#assign _CONTEXT_ = "objectify" >
package ${entityPackageName};

import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Transient;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.MappedSuperclass;
<#list importedTypes as type>
import ${type};
</#list>

import com.googlecode.objectify.annotation.Cached;

<#if abstractSuperclass>
@MappedSuperclass
<#else>
@Entity (name="${name}")
@Cached
</#if>
public <#if abstractSuperclass>abstract </#if>class ${objectifyName} <#if superClass??>extends ${superClass.objectifyName}</#if> implements ${name} {

<#if serializable>
	private static final long serialVersionUID = 1L;
</#if>

<#include "entityAttributes.ftl" >	
	
<#include "entityObjectifyConstructor.ftl" >

<#include "entityGetterSetter.ftl" >

<#include "entityMethods.ftl" >

<#include "entityHashEqualsToString.ftl" >

}